﻿using Castle.Core.Logging;
using User.Global.Contracts.Message;

namespace User.Web.Contracts.Model
{
    public interface IModelBase
    {
        /// <summary>
        /// Der Aktuell verwendete Logger für die jeweilige Klasse
        /// </summary>
        ILogger Logger { get; set; }

        /// <summary>
        /// Hinzufügen einer Message zur Ausgabe.
        /// </summary>
        IAddMessage AddMessage { get; set; }

        /// <summary>
        /// Setzten der Externen und internen Kommunikationsklasse für die passende Ausgabe.
        /// </summary>
        /// <param name="logger">Der Logger für das Filesystem</param>
        /// <param name="addMessage">die Messageanzeige.</param>
        void SetCommunication(ILogger logger, IAddMessage addMessage);
    }
}